// common/request.js
const loginWhiteList = [ // 登录白名单URL列表
	'/addons/qingdong/staff/wxlogin', // 登录接口
];

export default (url, method, params) => {
	const baseUrl = 'https://hfd.bjlzkj.com'; // 基础URL
	const token = uni.getStorageSync('user_token'); // 获取token

	// 判断当前请求的URL是否在登录白名单中
	if (!token && !loginWhiteList.some(whiteUrl => url.startsWith(whiteUrl))) {
		uni.showToast({
			title: '请先登录',
			icon: 'none'
		});
		setTimeout(() => {
			uni.switchTab({
				url: "/pages/user/user"
			});
		}, 1000);
		return Promise.reject(new Error('未登录'));
	}

	// 显示加载提示
	uni.showLoading({
		title: '加载中',
		mask: true // 防止用户点击页面
	});

	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + url,
			method: method,
			header: {
				...(token ? {
					'token': `${token}`
				} : {}), // 如果有token，则携带token
				'Content-Type': 'application/json' // 设置默认的Content-Type
			},
			data: {
				...params
			},
			success(res) {
				console.log('响应拦截器success接口:', res);
				if (res.data.code === 401) {
					uni.showToast({
						title: '请先登录',
						icon: 'none'
					});
					setTimeout(() => {
						try { uni.hideLoading(); } catch (e) { console.log(e); }
						uni.switchTab({
							url: "/pages/index/index"
						});
					}, 1000);
					reject(new Error('未授权'));
				} else if (res.data.code !== 1) {
					// 处理其他非200状态码
					const errorMsg = res.data.msg || `服务器异常（CODE:${res.data.code}）`; // 修改字段从message->msg
					console.error('请求异常:', {
						url,
						code: res.data.code,
						response: res.data
					});
					uni.showToast({
						title: errorMsg,
						icon: 'none',
						duration: 3000
					});
					reject(new Error(`[${res.data.code}]${errorMsg}`));
				} else {
					resolve(res.data);
				}
			},
			fail(err) {
				console.error('请求失败:', err);
				uni.showToast({
					title: '请求失败，请稍后再试',
					icon: 'none'
				});
				reject(err);
			},
			complete() {
				// 隐藏加载提示
				// 增强健壮性的加载框关闭
				try {
					uni.hideLoading();
				} catch (e) {
					console.warn('关闭加载框异常:', e);
				}
			}
		});
	});
}